#include <iostream>
#include <string>
using namespace std;

class MONKEY
{
public:
    MONKEY(const char *name);
    ~MONKEY();
    void Show() const;

private:
    string name;
};

class TIGER
{
public:
    TIGER(const char *name);
    ~TIGER();
    void Show() const;

private:
    string name;
};

class CIRCUS
{
public:
    CIRCUS(const char *name, const char *monkey, const char *tiger);
    ~CIRCUS();
    void Show() const;

private:
    string name;
    MONKEY monkey;
    TIGER tiger;
};

MONKEY::MONKEY(const char *name)
{
    this->name = name;
    cout << "Monkey " << name << " is born!" << endl;
}
MONKEY::~MONKEY()
{
    cout << "Monkey " << name << " is dead!" << endl;
}
void MONKEY::Show() const
{
    cout << "I am Monkey " << name << "." << endl;
}

TIGER::TIGER(const char *name)
{
    this->name = name;
    cout << "Tiger " << name << " is born!" << endl;
}
TIGER::~TIGER()
{
    cout << "Tiger " << name << " is dead!" << endl;
}
void TIGER::Show() const
{
    cout << "I am Tiger " << name << "." << endl;
}

CIRCUS::CIRCUS(const char *name, const char *monkey, const char *tiger)
    : monkey(monkey), tiger(tiger), name(name)
{
    cout << name << "'s circus is opened." << endl;
}
CIRCUS::~CIRCUS()
{
    cout << name << "'s circus is closed." << endl;
}
void CIRCUS::Show() const
{
    cout << name << "'s Circus." << endl;
    monkey.Show();
    tiger.Show();
}

int main()
{
    char c[128], m[128], t[128];
    cin >> c >> m >> t;
    CIRCUS circus(c, m, t);
    circus.Show();

    return 0;
}